﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


using System.Data;
using System.Data.SqlClient;

namespace CapaDatos
{
    public class DRegistro_Compras
    {
        //valiables

        private int _Idregistrocompras;
        private DateTime _Fecha_Emision;
        private DateTime _Fecha_Vencimiento;
        private string _Serie_Tabla11;
        private string _Glosa;
        private int _Idtabla10;
        private DateTime _Anho_Emisiondua;
        private string _Num_Comprobante_Pago;
        private int _Idproveedor;
        private decimal _Base_Imponible;
        private decimal _Igv1;
        private decimal _Base2;
        private decimal _Igv2;
        private decimal _Base1;
        private decimal _Igv3;
        private decimal _Valores_Nogravados;
        private decimal _Isc;
        private decimal _Otros_Tributos_Cargos;
        private string _Num_Comprobante_Pago_Emitido_Snd;
        private string _Cdd_Numero;
        private DateTime _Cdd_Fecha_Emision;
        private string _Tipo_Cambio;
        private DateTime _Rp_Fecha;
        private int _Rp_Tipo;
        private string _Rp_Serie;
        private string _Rp_Num_Comprobante;
        private int _Idplancontable;
        private string _Cuenta;
        private string _Estado;  
        private string _TextoBuscar;

        public string Cuenta
        {
            get { return _Cuenta; }
            set { _Cuenta = value; }
        }
        private string _Descripcion;

        public string Descripcion
        {
            get { return _Descripcion; }
            set { _Descripcion = value; }
        }
        private decimal _Debe;
        private decimal _Haber;
        private int _Idtrabajador;


        public string TextoBuscar
        {
            get { return _TextoBuscar; }
            set { _TextoBuscar = value; }
        }

        public string Estado
        {
            get { return _Estado; }
            set { _Estado = value; }
        }  

        //Metodos
        //SETTER AND GETTER
        public int Idregistrocompras
        {
            get { return _Idregistrocompras; }
            set { _Idregistrocompras = value; }
        }



        public DateTime Fecha_Emision
        {
            get { return _Fecha_Emision; }
            set { _Fecha_Emision = value; }
        }

        public DateTime Fecha_Vencimiento
        {
            get { return _Fecha_Vencimiento; }
            set { _Fecha_Vencimiento = value; }
        }


        public string Serie_Tabla11
        {
            get { return _Serie_Tabla11; }
            set { _Serie_Tabla11 = value; }
        }

        public DateTime Anho_Emisiondua
        {
            get { return _Anho_Emisiondua; }
            set { _Anho_Emisiondua = value; }
        }

        public string Num_Comprobante_Pago
        {
            get { return _Num_Comprobante_Pago; }
            set { _Num_Comprobante_Pago = value; }
        }


        public decimal Base_Imponible
        {
            get { return _Base_Imponible; }
            set { _Base_Imponible = value; }
        }



        public decimal Igv1
        {
            get { return _Igv1; }
            set { _Igv1 = value; }
        }

        public decimal Igv2
        {
            get { return _Igv2; }
            set { _Igv2 = value; }
        }
        public decimal Igv3
        {
            get { return _Igv3; }
            set { _Igv3 = value; }
        }

        public decimal Valores_Nogravados
        {
            get { return _Valores_Nogravados; }
            set { _Valores_Nogravados = value; }
        }

        public decimal Isc
        {
            get { return _Isc; }
            set { _Isc = value; }
        }

        public decimal Otros_Tributos_Cargos
        {
            get { return _Otros_Tributos_Cargos; }
            set { _Otros_Tributos_Cargos = value; }
        }

        public string Num_Comprobante_Pago_Emitido_Snd
        {
            get { return _Num_Comprobante_Pago_Emitido_Snd; }
            set { _Num_Comprobante_Pago_Emitido_Snd = value; }
        }

        public string Cdd_Numero
        {
            get { return _Cdd_Numero; }
            set { _Cdd_Numero = value; }
        }

        public DateTime Cdd_Fecha_Emision
        {
            get { return _Cdd_Fecha_Emision; }
            set { _Cdd_Fecha_Emision = value; }
        }

        public string Tipo_Cambio
        {
            get { return _Tipo_Cambio; }
            set { _Tipo_Cambio = value; }
        }

        public DateTime Rp_Fecha
        {
            get { return _Rp_Fecha; }
            set { _Rp_Fecha = value; }
        }



        public int Rp_Tipo
        {
            get { return _Rp_Tipo; }
            set { _Rp_Tipo = value; }
        }
        public string Rp_Serie
        {
            get { return _Rp_Serie; }
            set { _Rp_Serie = value; }
        }

        public string Rp_Num_Comprobante
        {
            get { return _Rp_Num_Comprobante; }
            set { _Rp_Num_Comprobante = value; }
        }


        public int Idproveedor
        {
            get { return _Idproveedor; }
            set { _Idproveedor = value; }
        }
        public int Idtabla10
        {
            get { return _Idtabla10; }
            set { _Idtabla10 = value; }
        }
        public int Idtrabajador
        {
            get { return _Idtrabajador; }
            set { _Idtrabajador = value; }
        }

        public decimal Base2
        {
            get { return _Base2; }
            set { _Base2 = value; }
        }


        public decimal Base1
        {
            get { return _Base1; }
            set { _Base1 = value; }
        }


        public string Glosa
        {
            get { return _Glosa; }
            set { _Glosa = value; }
        }


        public int Idplancontable
        {
            get { return _Idplancontable; }
            set { _Idplancontable = value; }
        }

        public decimal Debe
        {
            get { return _Debe; }
            set { _Debe = value; }
        }

        public decimal Haber
        {
            get { return _Haber; }
            set { _Haber = value; }
        }

        //Constructores
        public DRegistro_Compras()
        {

        }
        public DRegistro_Compras(
            int idregistrocompras,
            DateTime fecha_emision,
            DateTime fecha_vencimiento,
            string serie_tabla11,
            string glosa, 
            DateTime anho_emisiondua,
            string num_comprobante_pago,
            decimal base_imponible,
            decimal igv1,
            decimal igv2,
            decimal igv3,
            decimal valores_nogravados,
            decimal isc,
            decimal otros_tributos_cargos,
            string num_comprob_pago_emitido_snd, 
            string cdd_numero,
            DateTime cdd_fecha_emision,
            string tipo_cambio, 
            DateTime rp_fecha,
            int rp_tipo,
            string rp_serie,
            string rp_num_comprobante,
            int idproveedor,
            int idtabla10,
            int idplancontable,
            decimal debe,
            decimal haber,
            int idtrabajador,
            decimal base2,
            decimal base1,
            string estado,
            string textobuscar)
        {
            this.Idregistrocompras = idregistrocompras;
            this.Fecha_Emision = fecha_emision;
            this.Fecha_Vencimiento = fecha_vencimiento;
            this.Serie_Tabla11 = serie_tabla11;
            this.Glosa = glosa;
            this.Anho_Emisiondua = anho_emisiondua;
            this.Num_Comprobante_Pago = num_comprobante_pago;
            this.Base_Imponible = base_imponible;
            this.Valores_Nogravados = valores_nogravados;
            this.Isc = isc;
            this.Otros_Tributos_Cargos = otros_tributos_cargos;
            this.Num_Comprobante_Pago_Emitido_Snd = num_comprob_pago_emitido_snd;
            this.Cdd_Numero = cdd_numero;
            this.Cdd_Fecha_Emision = cdd_fecha_emision;
            this.Tipo_Cambio = tipo_cambio;
            this.Rp_Fecha = rp_fecha;
            this.Rp_Tipo = rp_tipo;
            this.Rp_Serie = rp_serie;
            this.Rp_Num_Comprobante = rp_num_comprobante;
            this.Idproveedor = idproveedor;
            this.Idtabla10 = idtabla10;
            this.Idplancontable = idplancontable;
            this.Idtrabajador = idtrabajador;
            this.Base2 = base2;
            this.Igv1 = igv1;
            this.Base1 = base1;
            this.Igv2 = igv2;
            this.Igv3 = igv3;
            this.Debe = debe;
            this.Haber = haber;
            this.Estado = estado;
            this.TextoBuscar = textobuscar;

        }


        //Método Insertar  

        public string Insertar(DRegistro_Compras Registro_Compras)
        {
            string rpta = "";
            SqlConnection SqlCon = new SqlConnection();
            try
            {
                //Código  
                SqlCon.ConnectionString = Conexion.Cn;
                SqlCon.Open();
                //Establecer el Comando  
                SqlCommand SqlCmd = new SqlCommand();
                SqlCmd.Connection = SqlCon;
                SqlCmd.CommandText = "spinsertar_registro_compras";
                SqlCmd.CommandType = CommandType.StoredProcedure;

                SqlParameter ParIdregistrocompras = new SqlParameter();
                ParIdregistrocompras.ParameterName = "@idregistrocompras";
                ParIdregistrocompras.SqlDbType = SqlDbType.Int;
                ParIdregistrocompras.Direction = ParameterDirection.Output;
                SqlCmd.Parameters.Add(ParIdregistrocompras);

                SqlParameter ParFecha_Emision = new SqlParameter();
                ParFecha_Emision.ParameterName = "@fecha_emision";
                ParFecha_Emision.SqlDbType = System.Data.SqlDbType.DateTime;
                ParFecha_Emision.Size = 40;
                ParFecha_Emision.Value = Registro_Compras.Fecha_Emision;
                SqlCmd.Parameters.Add(ParFecha_Emision);

                SqlParameter ParFecha_Vencimiento = new SqlParameter();
                ParFecha_Vencimiento.ParameterName = "@fecha_vencimiento";
                ParFecha_Vencimiento.SqlDbType = System.Data.SqlDbType.DateTime;
                ParFecha_Vencimiento.Size = 40;
                ParFecha_Vencimiento.Value = Registro_Compras.Fecha_Vencimiento;
                SqlCmd.Parameters.Add(ParFecha_Vencimiento);

                SqlParameter ParSerie_Tabla11 = new SqlParameter();
                ParSerie_Tabla11.ParameterName = "@serie_tabla11";
                ParSerie_Tabla11.SqlDbType = SqlDbType.VarChar;
                ParSerie_Tabla11.Size = 20;
                ParSerie_Tabla11.Value = Registro_Compras.Serie_Tabla11;
                SqlCmd.Parameters.Add(ParSerie_Tabla11);


                SqlParameter ParGlosa = new SqlParameter();
                ParGlosa.ParameterName = "@glosa";
                ParGlosa.SqlDbType = SqlDbType.VarChar;
                ParGlosa.Size = 100;
                ParGlosa.Value = Registro_Compras.Glosa;
                SqlCmd.Parameters.Add(ParGlosa);

                SqlParameter ParAño_Emisiondua = new SqlParameter();
                ParAño_Emisiondua.ParameterName = "@anho_emisiondua";
                ParAño_Emisiondua.SqlDbType = System.Data.SqlDbType.DateTime;
                ParAño_Emisiondua.Size = 40;
                ParAño_Emisiondua.Value = Registro_Compras.Anho_Emisiondua;
                SqlCmd.Parameters.Add(ParAño_Emisiondua);

                SqlParameter ParNum_Comprobante_Pago = new SqlParameter();
                ParNum_Comprobante_Pago.ParameterName = "@num_comprobante_pago";
                ParNum_Comprobante_Pago.SqlDbType = SqlDbType.VarChar;
                ParNum_Comprobante_Pago.Size = 20;
                ParNum_Comprobante_Pago.Value = Registro_Compras.Num_Comprobante_Pago;
                SqlCmd.Parameters.Add(ParNum_Comprobante_Pago);

                SqlParameter ParBase_Imponible = new SqlParameter();
                ParBase_Imponible.ParameterName = "@base_imponible";
                ParBase_Imponible.SqlDbType = SqlDbType.Decimal;
                ParBase_Imponible.Precision = 10;
                ParBase_Imponible.Scale = 2;
                ParBase_Imponible.Value = Registro_Compras.Base_Imponible;
                SqlCmd.Parameters.Add(ParBase_Imponible);


                SqlParameter ParValores_Nogravados = new SqlParameter();
                ParValores_Nogravados.ParameterName = "@valores_nogravados";
                ParValores_Nogravados.SqlDbType = SqlDbType.Decimal;
                ParValores_Nogravados.Precision = 10;
                ParValores_Nogravados.Scale = 2;
                ParValores_Nogravados.Value = Registro_Compras.Valores_Nogravados;
                SqlCmd.Parameters.Add(ParValores_Nogravados);

                SqlParameter ParIsc = new SqlParameter();
                ParIsc.ParameterName = "@isc";
                ParIsc.SqlDbType = SqlDbType.Decimal;
                ParIsc.Precision = 10;
                ParIsc.Scale = 2;
                ParIsc.Value = Registro_Compras.Isc;
                SqlCmd.Parameters.Add(ParIsc);

                SqlParameter ParoTros_Tributos_Cargados = new SqlParameter();
                ParoTros_Tributos_Cargados.ParameterName = "@otros_tributos_cargos";
                ParoTros_Tributos_Cargados.SqlDbType = SqlDbType.Decimal;
                ParoTros_Tributos_Cargados.Precision = 10;
                ParoTros_Tributos_Cargados.Scale = 2;
                ParoTros_Tributos_Cargados.Value = Registro_Compras.Otros_Tributos_Cargos;
                SqlCmd.Parameters.Add(ParoTros_Tributos_Cargados);

                SqlParameter ParNum_Comprobante_Pago_EmitidoSND = new SqlParameter();
                ParNum_Comprobante_Pago_EmitidoSND.ParameterName = "@num_comprob_pago_emitido_snd";
                ParNum_Comprobante_Pago_EmitidoSND.SqlDbType = SqlDbType.VarChar;
                ParNum_Comprobante_Pago_EmitidoSND.Size = 10;
                ParNum_Comprobante_Pago_EmitidoSND.Value = Registro_Compras.Num_Comprobante_Pago_Emitido_Snd;
                SqlCmd.Parameters.Add(ParNum_Comprobante_Pago_EmitidoSND);

                SqlParameter ParCdd_Numero = new SqlParameter();
                ParCdd_Numero.ParameterName = "@cdd_numero";
                ParCdd_Numero.SqlDbType = SqlDbType.VarChar;
                ParCdd_Numero.Size = 10;
                ParCdd_Numero.Value = Registro_Compras.Cdd_Numero;
                SqlCmd.Parameters.Add(ParCdd_Numero);

                SqlParameter ParCdd_FechaEmision = new SqlParameter();
                ParCdd_FechaEmision.ParameterName = "@cdd_fecha_emision";
                ParCdd_FechaEmision.SqlDbType = System.Data.SqlDbType.DateTime;
                ParCdd_FechaEmision.Size = 40;
                ParCdd_FechaEmision.Value = Registro_Compras.Cdd_Fecha_Emision;
                SqlCmd.Parameters.Add(ParCdd_FechaEmision);


                SqlParameter ParTipo_Cambio = new SqlParameter();
                ParTipo_Cambio.ParameterName = "@tipo_cambio";
                ParTipo_Cambio.SqlDbType = SqlDbType.VarChar;
                ParTipo_Cambio.Size = 10;
                ParTipo_Cambio.Value = Registro_Compras.Tipo_Cambio;
                SqlCmd.Parameters.Add(ParTipo_Cambio);


                SqlParameter ParRp_Fecha = new SqlParameter();
                ParRp_Fecha.ParameterName = "@rp_fecha";
                ParRp_Fecha.SqlDbType = System.Data.SqlDbType.DateTime;
                ParRp_Fecha.Size = 40;
                ParRp_Fecha.Value = Registro_Compras.Rp_Fecha;
                SqlCmd.Parameters.Add(ParRp_Fecha);


                SqlParameter ParRp_Tipo = new SqlParameter();
                ParRp_Tipo.ParameterName = "@rp_tipo";
                ParRp_Tipo.SqlDbType = SqlDbType.Int;
                ParRp_Tipo.Value = Registro_Compras.Rp_Tipo;
                SqlCmd.Parameters.Add(ParRp_Tipo);


                SqlParameter ParRp_Serie = new SqlParameter();
                ParRp_Serie.ParameterName = "@rp_serie";
                ParRp_Serie.SqlDbType = SqlDbType.VarChar;
                ParRp_Serie.Size = 20;
                ParRp_Serie.Value = Registro_Compras.Rp_Serie;
                SqlCmd.Parameters.Add(ParRp_Serie);

                SqlParameter ParRp_Num_Comprobante = new SqlParameter();
                ParRp_Num_Comprobante.ParameterName = "@rp_num_comprobante";
                ParRp_Num_Comprobante.SqlDbType = SqlDbType.VarChar;
                ParRp_Num_Comprobante.Size = 20;
                ParRp_Num_Comprobante.Value = Registro_Compras.Rp_Num_Comprobante;
                SqlCmd.Parameters.Add(ParRp_Num_Comprobante);


                SqlParameter ParIdproveedor = new SqlParameter();
                ParIdproveedor.ParameterName = "@idpersonaempresa";
                ParIdproveedor.SqlDbType = SqlDbType.Int;
                ParIdproveedor.Value = Registro_Compras.Idproveedor;
                SqlCmd.Parameters.Add(ParIdproveedor); 
                
                SqlParameter ParIdtabla10 = new SqlParameter();
                ParIdtabla10.ParameterName = "@idtabla10";
                ParIdtabla10.SqlDbType = SqlDbType.Int;
                ParIdtabla10.Value = Registro_Compras.Idtabla10;
                SqlCmd.Parameters.Add(ParIdtabla10);


                SqlParameter ParIdplancontable = new SqlParameter();
                ParIdplancontable.ParameterName = "@idplancontable";
                ParIdplancontable.SqlDbType = SqlDbType.Int;
                ParIdplancontable.Value = Registro_Compras.Idplancontable;
                SqlCmd.Parameters.Add(ParIdplancontable); 
                
                SqlParameter ParIdtrabajador = new SqlParameter();
                ParIdtrabajador.ParameterName = "@idtrabajador";
                ParIdtrabajador.SqlDbType = SqlDbType.Int;
                ParIdtrabajador.Value = Registro_Compras.Idtrabajador;
                SqlCmd.Parameters.Add(ParIdtrabajador);


                SqlParameter ParCuenta = new SqlParameter();
                ParCuenta.ParameterName = "@cuenta";
                ParCuenta.SqlDbType = SqlDbType.VarChar;
                ParCuenta.Size = 225;
                ParCuenta.Value = Registro_Compras.Cuenta;
                SqlCmd.Parameters.Add(ParCuenta);

                SqlParameter ParDescripcion = new SqlParameter();
                ParDescripcion.ParameterName = "@descripcion";
                ParDescripcion.SqlDbType = SqlDbType.VarChar;
                ParDescripcion.Size = 225;
                ParDescripcion.Value = Registro_Compras.Descripcion;
                SqlCmd.Parameters.Add(ParDescripcion);

                SqlParameter ParBase2 = new SqlParameter();
                ParBase2.ParameterName = "@base2";
                ParBase2.SqlDbType = SqlDbType.Decimal;
                ParBase2.Precision = 10;
                ParBase2.Scale = 2;
                ParBase2.Value = Registro_Compras.Base2;
                SqlCmd.Parameters.Add(ParBase2);


                SqlParameter ParBase1 = new SqlParameter();
                ParBase1.ParameterName = "@base1";
                ParBase1.SqlDbType = SqlDbType.Decimal;
                ParBase1.Precision = 10;
                ParBase1.Scale = 2;
                ParBase1.Value = Registro_Compras.Base1;
                SqlCmd.Parameters.Add(ParBase1);

                SqlParameter Parigv1 = new SqlParameter();
                Parigv1.ParameterName = "@igv1";
                Parigv1.SqlDbType = SqlDbType.Decimal;
                Parigv1.Precision = 10;
                Parigv1.Scale = 2;
                Parigv1.Value = Registro_Compras.Igv1;
                SqlCmd.Parameters.Add(Parigv1);

                SqlParameter Parigv2 = new SqlParameter();
                Parigv2.ParameterName = "@igv2";
                Parigv2.SqlDbType = SqlDbType.Decimal;
                Parigv2.Precision = 10;
                Parigv2.Scale = 2;
                Parigv2.Value = Registro_Compras.Igv2;
                SqlCmd.Parameters.Add(Parigv2);

                SqlParameter Parigv3 = new SqlParameter();
                Parigv3.ParameterName = "@igv3";
                Parigv3.SqlDbType = SqlDbType.Decimal;
                Parigv3.Precision = 10;
                Parigv3.Scale = 2;
                Parigv3.Value = Registro_Compras.Igv3;
                SqlCmd.Parameters.Add(Parigv3);


                SqlParameter ParDebe = new SqlParameter();
                ParDebe.ParameterName = "@debe";
                ParDebe.SqlDbType = SqlDbType.Decimal;
                ParDebe.Precision = 10;
                ParDebe.Scale = 2;
                ParDebe.Value = Registro_Compras.Debe;
                SqlCmd.Parameters.Add(ParDebe);


                SqlParameter ParHaber = new SqlParameter();
                ParHaber.ParameterName = "@haber";
                ParHaber.SqlDbType = SqlDbType.Decimal;
                ParHaber.Precision = 10;
                ParHaber.Scale = 2;
                ParHaber.Value = Registro_Compras.Haber;
                SqlCmd.Parameters.Add(ParHaber);


                SqlParameter ParEstado = new SqlParameter();
                ParEstado.ParameterName = "@estado";
                ParEstado.SqlDbType = SqlDbType.VarChar;
                ParEstado.Size = 7;
                ParEstado.Value = Registro_Compras.Estado;
                SqlCmd.Parameters.Add(ParEstado);  

                //Ejecutamos nuestro comando  
                rpta = SqlCmd.ExecuteNonQuery() == 1 ? "OK" : "NO se Ingreso el Registro";

            }
            catch (Exception ex)
            {
                rpta = ex.Message;
            }
            finally
            {
                if (SqlCon.State == ConnectionState.Open) SqlCon.Close();
            }
            return rpta;

        }


        //Método Editar
        public string Editar(DRegistro_Compras Registro_Compras)
        {
            string rpta = "";
            SqlConnection SqlCon = new SqlConnection();
            try
            {
                //Código  
                SqlCon.ConnectionString = Conexion.Cn;
                SqlCon.Open();
                //Establecer el Comando  
                SqlCommand SqlCmd = new SqlCommand();
                SqlCmd.Connection = SqlCon;
                SqlCmd.CommandText = "speditar_registro_compras";
                SqlCmd.CommandType = CommandType.StoredProcedure;


                SqlParameter ParIdregistrocompras = new SqlParameter();
                ParIdregistrocompras.ParameterName = "@idregistrocompras";
                ParIdregistrocompras.SqlDbType = SqlDbType.Int;
                ParIdregistrocompras.Value = Registro_Compras.Idregistrocompras;
                SqlCmd.Parameters.Add(ParIdregistrocompras);

                SqlParameter ParFecha_Emision = new SqlParameter();
                ParFecha_Emision.ParameterName = "@fecha_emision";
                ParFecha_Emision.SqlDbType = System.Data.SqlDbType.DateTime;
                ParFecha_Emision.Size = 40;
                ParFecha_Emision.Value = Registro_Compras.Fecha_Emision;
                SqlCmd.Parameters.Add(ParFecha_Emision);

                SqlParameter ParFecha_Vencimiento = new SqlParameter();
                ParFecha_Vencimiento.ParameterName = "@fecha_vencimiento";
                ParFecha_Vencimiento.SqlDbType = System.Data.SqlDbType.DateTime;
                ParFecha_Vencimiento.Size = 40;
                ParFecha_Vencimiento.Value = Registro_Compras.Fecha_Vencimiento;
                SqlCmd.Parameters.Add(ParFecha_Vencimiento);

                SqlParameter ParSerie_Tabla11 = new SqlParameter();
                ParSerie_Tabla11.ParameterName = "@serie_tabla11";
                ParSerie_Tabla11.SqlDbType = SqlDbType.VarChar;
                ParSerie_Tabla11.Size = 20;
                ParSerie_Tabla11.Value = Registro_Compras.Serie_Tabla11;
                SqlCmd.Parameters.Add(ParSerie_Tabla11);


                SqlParameter ParGlosa = new SqlParameter();
                ParGlosa.ParameterName = "@glosa";
                ParGlosa.SqlDbType = SqlDbType.VarChar;
                ParGlosa.Size = 100;
                ParGlosa.Value = Registro_Compras.Glosa;
                SqlCmd.Parameters.Add(ParGlosa);

                SqlParameter ParAño_Emisiondua = new SqlParameter();
                ParAño_Emisiondua.ParameterName = "@anho_emisiondua";
                ParAño_Emisiondua.SqlDbType = System.Data.SqlDbType.DateTime;
                ParAño_Emisiondua.Size = 40;
                ParAño_Emisiondua.Value = Registro_Compras.Anho_Emisiondua;
                SqlCmd.Parameters.Add(ParAño_Emisiondua);

                SqlParameter ParNum_Comprobante_Pago = new SqlParameter();
                ParNum_Comprobante_Pago.ParameterName = "@num_comprobante_pago";
                ParNum_Comprobante_Pago.SqlDbType = SqlDbType.VarChar;
                ParNum_Comprobante_Pago.Size = 20;
                ParNum_Comprobante_Pago.Value = Registro_Compras.Num_Comprobante_Pago;
                SqlCmd.Parameters.Add(ParNum_Comprobante_Pago);

                SqlParameter ParBase_Imponible = new SqlParameter();
                ParBase_Imponible.ParameterName = "@base_imponible";
                ParBase_Imponible.SqlDbType = SqlDbType.Decimal;
                ParBase_Imponible.Precision = 10;
                ParBase_Imponible.Scale = 2;
                ParBase_Imponible.Value = Registro_Compras.Base_Imponible;
                SqlCmd.Parameters.Add(ParBase_Imponible);


                SqlParameter ParValores_Nogravados = new SqlParameter();
                ParValores_Nogravados.ParameterName = "@valores_nogravados";
                ParValores_Nogravados.SqlDbType = SqlDbType.Decimal;
                ParValores_Nogravados.Precision = 10;
                ParValores_Nogravados.Scale = 2;
                ParValores_Nogravados.Value = Registro_Compras.Valores_Nogravados;
                SqlCmd.Parameters.Add(ParValores_Nogravados);

                SqlParameter ParIsc = new SqlParameter();
                ParIsc.ParameterName = "@isc";
                ParIsc.SqlDbType = SqlDbType.Decimal;
                ParIsc.Precision = 10;
                ParIsc.Scale = 2;
                ParIsc.Value = Registro_Compras.Isc;
                SqlCmd.Parameters.Add(ParIsc);

                SqlParameter ParoTros_Tributos_Cargados = new SqlParameter();
                ParoTros_Tributos_Cargados.ParameterName = "@otros_tributos_cargos";
                ParoTros_Tributos_Cargados.SqlDbType = SqlDbType.Decimal;
                ParoTros_Tributos_Cargados.Precision = 10;
                ParoTros_Tributos_Cargados.Scale = 2;
                ParoTros_Tributos_Cargados.Value = Registro_Compras.Otros_Tributos_Cargos;
                SqlCmd.Parameters.Add(ParoTros_Tributos_Cargados);

                SqlParameter ParNum_Comprobante_Pago_EmitidoSND = new SqlParameter();
                ParNum_Comprobante_Pago_EmitidoSND.ParameterName = "@num_comprob_pago_emitido_snd";
                ParNum_Comprobante_Pago_EmitidoSND.SqlDbType = SqlDbType.VarChar;
                ParNum_Comprobante_Pago_EmitidoSND.Size = 10;
                ParNum_Comprobante_Pago_EmitidoSND.Value = Registro_Compras.Num_Comprobante_Pago_Emitido_Snd;
                SqlCmd.Parameters.Add(ParNum_Comprobante_Pago_EmitidoSND);

                SqlParameter ParCdd_Numero = new SqlParameter();
                ParCdd_Numero.ParameterName = "@cdd_numero";
                ParCdd_Numero.SqlDbType = SqlDbType.VarChar;
                ParCdd_Numero.Size = 10;
                ParCdd_Numero.Value = Registro_Compras.Cdd_Numero;
                SqlCmd.Parameters.Add(ParCdd_Numero);

                SqlParameter ParCdd_FechaEmision = new SqlParameter();
                ParCdd_FechaEmision.ParameterName = "@cdd_fecha_emision";
                ParCdd_FechaEmision.SqlDbType = System.Data.SqlDbType.DateTime;
                ParCdd_FechaEmision.Size = 40;
                ParCdd_FechaEmision.Value = Registro_Compras.Cdd_Fecha_Emision;
                SqlCmd.Parameters.Add(ParCdd_FechaEmision);


                SqlParameter ParTipo_Cambio = new SqlParameter();
                ParTipo_Cambio.ParameterName = "@tipo_cambio";
                ParTipo_Cambio.SqlDbType = SqlDbType.VarChar;
                ParTipo_Cambio.Size = 10;
                ParTipo_Cambio.Value = Registro_Compras.Tipo_Cambio;
                SqlCmd.Parameters.Add(ParTipo_Cambio);


                SqlParameter ParRp_Fecha = new SqlParameter();
                ParRp_Fecha.ParameterName = "@rp_fecha";
                ParRp_Fecha.SqlDbType = System.Data.SqlDbType.DateTime;
                ParRp_Fecha.Size = 40;
                ParRp_Fecha.Value = Registro_Compras.Rp_Fecha;
                SqlCmd.Parameters.Add(ParRp_Fecha);


                SqlParameter ParRp_Tipo = new SqlParameter();
                ParRp_Tipo.ParameterName = "@rp_tipo";
                ParRp_Tipo.SqlDbType = SqlDbType.Int;
                ParRp_Tipo.Value = Registro_Compras.Rp_Tipo;
                SqlCmd.Parameters.Add(ParRp_Tipo);


                SqlParameter ParRp_Serie = new SqlParameter();
                ParRp_Serie.ParameterName = "@rp_serie";
                ParRp_Serie.SqlDbType = SqlDbType.VarChar;
                ParRp_Serie.Size = 20;
                ParRp_Serie.Value = Registro_Compras.Rp_Serie;
                SqlCmd.Parameters.Add(ParRp_Serie);

                SqlParameter ParRp_Num_Comprobante = new SqlParameter();
                ParRp_Num_Comprobante.ParameterName = "@rp_num_comprobante";
                ParRp_Num_Comprobante.SqlDbType = SqlDbType.VarChar;
                ParRp_Num_Comprobante.Size = 20;
                ParRp_Num_Comprobante.Value = Registro_Compras.Rp_Num_Comprobante;
                SqlCmd.Parameters.Add(ParRp_Num_Comprobante);


                SqlParameter ParIdproveedor = new SqlParameter();
                ParIdproveedor.ParameterName = "@idpersonaempresa";
                ParIdproveedor.SqlDbType = SqlDbType.Int;
                ParIdproveedor.Value = Registro_Compras.Idproveedor;
                SqlCmd.Parameters.Add(ParIdproveedor);

                SqlParameter ParIdtabla10 = new SqlParameter();
                ParIdtabla10.ParameterName = "@idtabla10";
                ParIdtabla10.SqlDbType = SqlDbType.Int;
                ParIdtabla10.Value = Registro_Compras.Idtabla10;
                SqlCmd.Parameters.Add(ParIdtabla10);


                SqlParameter ParIdplancontable = new SqlParameter();
                ParIdplancontable.ParameterName = "@idplancontable";
                ParIdplancontable.SqlDbType = SqlDbType.Int;
                ParIdplancontable.Value = Registro_Compras.Idplancontable;
                SqlCmd.Parameters.Add(ParIdplancontable);

                SqlParameter ParIdtrabajador = new SqlParameter();
                ParIdtrabajador.ParameterName = "@idtrabajador";
                ParIdtrabajador.SqlDbType = SqlDbType.Int;
                ParIdtrabajador.Value = Registro_Compras.Idtrabajador;
                SqlCmd.Parameters.Add(ParIdtrabajador);


                SqlParameter ParCuenta = new SqlParameter();
                ParCuenta.ParameterName = "@cuenta";
                ParCuenta.SqlDbType = SqlDbType.VarChar;
                ParCuenta.Size = 225;
                ParCuenta.Value = Registro_Compras.Cuenta;
                SqlCmd.Parameters.Add(ParCuenta);

                SqlParameter ParDescripcion = new SqlParameter();
                ParDescripcion.ParameterName = "@descripcion";
                ParDescripcion.SqlDbType = SqlDbType.VarChar;
                ParDescripcion.Size = 225;
                ParDescripcion.Value = Registro_Compras.Descripcion;
                SqlCmd.Parameters.Add(ParDescripcion);

                SqlParameter ParBase2 = new SqlParameter();
                ParBase2.ParameterName = "@base2";
                ParBase2.SqlDbType = SqlDbType.Decimal;
                ParBase2.Precision = 10;
                ParBase2.Scale = 2;
                ParBase2.Value = Registro_Compras.Base2;
                SqlCmd.Parameters.Add(ParBase2);


                SqlParameter ParBase1 = new SqlParameter();
                ParBase1.ParameterName = "@base1";
                ParBase1.SqlDbType = SqlDbType.Decimal;
                ParBase1.Precision = 10;
                ParBase1.Scale = 2;
                ParBase1.Value = Registro_Compras.Base1;
                SqlCmd.Parameters.Add(ParBase1);



                SqlParameter Parigv1 = new SqlParameter();
                Parigv1.ParameterName = "@igv1";
                Parigv1.SqlDbType = SqlDbType.Decimal;
                Parigv1.Precision = 10;
                Parigv1.Scale = 2;
                Parigv1.Value = Registro_Compras.Igv1;
                SqlCmd.Parameters.Add(Parigv1);

                SqlParameter Parigv2 = new SqlParameter();
                Parigv2.ParameterName = "@igv2";
                Parigv2.SqlDbType = SqlDbType.Decimal;
                Parigv2.Precision = 10;
                Parigv2.Scale = 2;
                Parigv2.Value = Registro_Compras.Igv2;
                SqlCmd.Parameters.Add(Parigv2);

                SqlParameter Parigv3 = new SqlParameter();
                Parigv3.ParameterName = "@igv3";
                Parigv3.SqlDbType = SqlDbType.Decimal;
                Parigv3.Precision = 10;
                Parigv3.Scale = 2;
                Parigv3.Value = Registro_Compras.Igv3;
                SqlCmd.Parameters.Add(Parigv3);


                SqlParameter ParDebe = new SqlParameter();
                ParDebe.ParameterName = "@debe";
                ParDebe.SqlDbType = SqlDbType.Decimal;
                ParDebe.Precision = 10;
                ParDebe.Scale = 2;
                ParDebe.Value = Registro_Compras.Debe;
                SqlCmd.Parameters.Add(ParDebe);


                SqlParameter ParHaber = new SqlParameter();
                ParHaber.ParameterName = "@haber";
                ParHaber.SqlDbType = SqlDbType.Decimal;
                ParHaber.Precision = 10;
                ParHaber.Scale = 2;
                ParHaber.Value = Registro_Compras.Haber;
                SqlCmd.Parameters.Add(ParHaber);


                SqlParameter ParEstado = new SqlParameter();
                ParEstado.ParameterName = "@estado";
                ParEstado.SqlDbType = SqlDbType.VarChar;
                ParEstado.Size = 7;
                ParEstado.Value = Registro_Compras.Estado;
                SqlCmd.Parameters.Add(ParEstado);  

                //Ejecutamos nuestro comando  
                rpta = SqlCmd.ExecuteNonQuery() == 1 ? "OK" : "NO se Ingreso el Registro";

            }
            catch (Exception ex)
            {
                rpta = ex.Message;
            }
            finally
            {
                if (SqlCon.State == ConnectionState.Open) SqlCon.Close();
            }
            return rpta;
        }
        //Método Anular  

        //Método Eliminar  
        public string Eliminar(DRegistro_Compras Registro_Compras)
        {
            string rpta = "";
            SqlConnection SqlCon = new SqlConnection();
            try
            {
                //Código  
                SqlCon.ConnectionString = Conexion.Cn;
                SqlCon.Open();
                //Establecer el Comando  
                SqlCommand SqlCmd = new SqlCommand();
                SqlCmd.Connection = SqlCon;
                SqlCmd.CommandText = "speliminar_registro_compras";
                SqlCmd.CommandType = CommandType.StoredProcedure;

                SqlParameter ParIdarticulo = new SqlParameter();
                ParIdarticulo.ParameterName = "@idregistrocompras";
                ParIdarticulo.SqlDbType = SqlDbType.Int;
                ParIdarticulo.Value = Registro_Compras.Idregistrocompras;
                SqlCmd.Parameters.Add(ParIdarticulo);
                //Ejecutamos nuestro comando  

                rpta = SqlCmd.ExecuteNonQuery() == 1 ? "OK" : "NO se Elimino el Registro";

            }
            catch (Exception ex)
            {
                rpta = ex.Message;
            }
            finally
            {
                if (SqlCon.State == ConnectionState.Open) SqlCon.Close();
            }
            return rpta;
        }

        //Método Mostrar  
        public DataTable Mostrar()
        {
            DataTable DtResultado = new DataTable("registrocompras");
            SqlConnection SqlCon = new SqlConnection();
            try
            {
                SqlCon.ConnectionString = Conexion.Cn;
                SqlCommand SqlCmd = new SqlCommand();
                SqlCmd.Connection = SqlCon;
                SqlCmd.CommandText = "spmostrar_registro_compras";
                SqlCmd.CommandType = CommandType.StoredProcedure;

                SqlDataAdapter SqlDat = new SqlDataAdapter(SqlCmd);
                SqlDat.Fill(DtResultado);

            }
            catch (Exception ex)
            {
                DtResultado = null;
            }
            return DtResultado;

        }



        //Método Buscar Fecha  
        public DataTable BuscarFecha(DRegistro_Compras Registro_Compras)
        {
            DataTable DtResultado = new DataTable("registrocompras");
            SqlConnection SqlCon = new SqlConnection();
            try
            {
                SqlCon.ConnectionString = Conexion.Cn;
                SqlCommand SqlCmd = new SqlCommand();
                SqlCmd.Connection = SqlCon;
                SqlCmd.CommandText = "spbuscar_registro_compras";
                SqlCmd.CommandType = CommandType.StoredProcedure;

                SqlParameter ParTextoBuscar = new SqlParameter();
                ParTextoBuscar.ParameterName = "@textbuscar";
                ParTextoBuscar.SqlDbType = SqlDbType.VarChar;
                ParTextoBuscar.Size = 50;
                ParTextoBuscar.Value = Registro_Compras.TextoBuscar;
                SqlCmd.Parameters.Add(ParTextoBuscar);

                SqlDataAdapter SqlDat = new SqlDataAdapter(SqlCmd);
                SqlDat.Fill(DtResultado);
            }
            catch (Exception ex)
            {
                DtResultado = null;
            }
            return DtResultado;

        }
    }
}
